//
//  PGStatusViewModel.swift
//  PGWeibo
//
//  Created by Apple on 15/11/9.
//  Copyright © 2015年 Apple. All rights reserved.
//

import UIKit

class PGStatusViewModel: CustomStringConvertible {
    /// 微博数据模型
    var status: PGStatus
    /// 头像URL
    var iconImageURL: NSURL {
        let url = NSURL(string: (status.user?.profile_image_url)!)
        return url!
    }
    /// 会员等级
    var mbRankImage: UIImage? {
        let rank = "common_icon_membership_level\(status.user!.mbrank)"
        let iv = UIImage(named: rank)
        return iv ?? nil
    }
    /// 认证标志
    var verifiedImage: UIImage? {
        /// 认证类型，-1：没有认证，0，认证用户，2,3,5: 企业认证，220: 达人
        switch (status.user?.verified_type ?? -1) {
            case 0:     return UIImage(named: "avatar_vip")
            case 2,3,5: return UIImage(named: "avatar_enterprise_vip")
            case 220:   return UIImage(named: "avatar_grassroot")
            default:     return nil
        }
    }
    ///缩略图的URL数组
    var thumbnailUrls: [NSURL]?
    /// 缩略图URL数组 - 存储型属性 !!!
    /// 如果是原创微博，可以有图，可以没有图
    /// 如果是转发微博，一定没有图，retweeted_status 中，可以有图，也可以没有图
    /// 一条微博，最多只有一个 pic_urls 数组
    var reweetedText: String? {
        guard let s = status.retweeted_status else {
            return nil
        }
        return "@" + (s.user?.screen_name ?? "") + ": " + (s.text ?? "")
    }
    //构造函数
    init(status: PGStatus) {
        self.status = status
        //如果有缩略图则创建数组 否则不创建缩略图数组
        if let urls = status.retweeted_status?.pic_urls ?? status.pic_urls  {

            //创建缩略图数组
            thumbnailUrls = [NSURL]()
            
            //遍历把URL 弄出来添加到数组中
            for dict in urls {
                let url = NSURL(string: dict["thumbnail_pic"]!)
                
                thumbnailUrls?.append(url!)
            }
        }
        
    }
    /// 可重用的CellId
    var statusCellReuseId: String {
        return status.retweeted_status != nil ? statusReweetReuseCellId : statusNormalReuseCellId
    }
    /// 缓存cell的行高 提高性能
    lazy var rowHeight: CGFloat = {

        var cell: PGStatusCell

        // 根据是否是转发微博，决定 cell 的创建
        if self.status.retweeted_status != nil {
            cell = PGReweetStatusCell(style: .Default, reuseIdentifier: statusReweetReuseCellId)
        } else {
            cell = PGNormalStatusCell(style: .Default, reuseIdentifier: statusNormalReuseCellId)
        }
        
        return cell.rowHeight(self)
    }()
    
    var description: String {
        return status.description
    }
    
}